/**
 * 对象的继承js文件
 * @author root
 * @date 2021-12-02
 */
function Animal(id, name, age, gender) {
  this.id = id
  this.age = age
  this.name = name
  this.gender = gender
}

function Cat(strain) {
  this.strain = strain // 品种
}

Cat.prototype = new Animal(1, 'tom', 2, '公')
Cat.prototype.toString = function () {
  let str = `{
    "id":${this.id},
    "name":"${this.name}",
    "age":${this.age},
    "gender":"${this.gender}",
    "strain":"${this.strain}"
  }`
  console.log(str)
  return str
}
let cat = new Cat('龙猫')
let obj = JSON.parse(cat.toString())
console.log(obj)

/*
  1、一般情况下在js中首字母大写的函数，可以作为构造函数(constructor)进行使用,[ES6中的箭头函数不可以作为构造函数(let Fn = () => {})]  Cat，Aniaml都是构造函数，用于创建实例对象(new Cat())
  2、构造函数有一个属性prototype:Cat.prototype 是一个对象，称原型对象。 原型对象上具有构造函数赋予的属性和方法
  3、实例对象：
*/
